package com.zhangshanfeng.test;

import java.util.HashMap;
import java.util.Set;

/*
## HashMap集合应用案例

案例需求

- 创建一个HashMap集合，键是学生对象(Student)，值是居住地 (String)。存储多个元素，并遍历。
- 要求保证键的唯一性：如果学生对象的成员变量值相同，我们就认为是同一个对象

注意：

​	**HashMap是根据key的hashCode和equals方法来判断key是否重复的，因为底层数据结构是哈希表!!

## 4.HashMap集合

### 4.1HashMap集合概述和特点【理解】

+ HashMap底层是哈希表结构的
+ 依赖hashCode方法和equals方法保证键的唯一
+ 如果键要存储的是自定义对象，需要重写hashCode和equals方法

### 4.2HashMap集合应用案例【应用】

- 案例需求

  - 创建一个HashMap集合，键是学生对象(Student)，值是居住地 (String)。存储多个元素，并遍历。
  - 要求保证键的唯一性：如果学生对象的成员变量值相同，我们就认为是同一个对象


 */
public class HashMapDemo04 {
    public static void main(String[] args) {
        HashMap<Student2,String> hm = new HashMap<>();

        hm.put(new Student2("张三",28),"上海");
        hm.put(new Student2("李四",30),"陕西");
        hm.put(new Student2("王五",78),"海南");

        System.out.println(hm);
        //遍历集合
        //得到所有的键
        Set<Student2> keySet = hm.keySet();
        //增强for
        for (Student2 key : keySet) {
            //根据键得到对应的值
            String value = hm.get(key);
            System.out.println(key + "=== " + value);
        }
    }
}
